"""
最常用的
    index find split join把字符数组或者集合拼接起来
字符串的操作
    切片str[开始:结束:步长]
    语法[开始下标:结束下标:步长]
    开始下标默认为0
    结束下标就是最后
    步长默认就是1
查找替换
    str.index("xxx" ,开始位置下标，结束位置下标)
    str.lindex("xxx" ,开始位置下标，结束位置下标)
    str.rindex("xxx" ,开始位置下标，结束位置下标)

    str.find('xxxx',开始位置下标，结束位置下标)
    str.lfind 从坐标找 str.rfind 从右边找
    str.count('xxxx') xxx出现几次
    str.replace('oldstr','newstr' ,替换次数 )

分割
    str.split('分割字符',num) num表示要分割多少次,默认有几个分割字符分割几次
拼接
    xxxx.join(字符列表或者字符序列) 表示 使用xxx,把字符序列中的各个值拼接起来。
字母大小写
    xxx.capitalize() 只把字符串序列的首字母大写
    xxx.title() 把字符串中所有单词的首字母变大写
    xxx.lower() 把字符串中大写字母变小写
    xxx.upper() 把字符串小写字母变大写
处理字符串两侧的空白
    str.lstrip() # 去除左侧的空白
    str.rstrip() # 去除右侧的空白
    str.strip    # 去除字符串两侧的空白
居中对齐：
    str.ljust('一行的长度x',填充字符串)
    如果一行的长度是10个字符，但是字符串左对齐后长度不够，剩下的用填充字符串填充
    str.rjust('一行的长度x',填充字符串)
    如果一行的长度是10个字符，但是字符串右对齐后长度不够，剩下的用填充字符串填充
    str.just('一行的长度x',填充字符串)
    如果一行的长度是10个字符，但是字符串右对齐后长度不够，剩下的用填充字符串填充
字符串相关的判断
    str.startWith() 字符串是否以xxx结尾
    str.endWith()   字符串是否以xxx结尾
    str.isalpha()   字符串长度至少为1，且全都是字母组成 返回True
    str.isdigit()   字符串长度至少为1，且全都是数字组成 返回True
    str.isalnum()   字符串长度至少为1 ，且仅仅包含字母数字返回True
"""


name1 = "Tom"
name2 = "Rose"
#三引号的字符创支持换行
a  ="""
    早上好！
    hello
"""

b = '''
    woshi
    nidie
'''
print(name1)
print(name2)
print(a)
print(b)

print("我的名字是：%s " % name2)
print(f"我的名字是：{name2}")

print("通过索引得到字符串的元素")
c ="abcdefghigklmnopqrstuvwxyz"
print(c[0])
print(c[1])
print(c[2])

print("切片，其实就是拿到字符串的一部分，语法[开始下标:结束下标:步长]")
"""
语法[开始下标:结束下标:步长] 
开始下标默认为0
结束下标就是最后
步长默认就是1
"""
msg = "abcdefg"
print(msg[:]) # 直接把所有的都切下来
print(msg[::-1]) # 字符创反转
print(msg[1:]) # 从第二个开始截取到最后 bcdefg
print(msg[2:5]) # 截取第三个到第六个cde  含左不含右
print(msg[::2]) #从开始走到结束，正着走每隔两步截取一下 aceg
print(msg[::-2]) #从开始走到结束，倒着走每隔两步截取一下 geca
print(msg[-4:-1]) # 从倒数第四个截取到倒数第一个 含左不含右

"""  
    字符串常见操作
"""
# 查找
msg = "abcdefgabcdefg"
print(msg.find("a")) # 0 存在返回首次出现的索引，不存在返回-1
print(msg.find("a",3,10)) # 在 [3:10]之间查找a ，注意[3:10]含左不含右
print(msg.find("def")) # 返回首次匹配上的位置
print(msg.find("defaaa")) # 没找到返回 -1
print(msg.rfind('a')) #7  从右边开始查找，返回的索引是从右边开始数的
print(msg.count("a")) #2 返回某个字符串在序列中出现的次数

# 通过index的方式实现
print("index方式实现 和find使用的效果是一样的----------- ")
print(msg.index('a'))
print(msg.index("a",3,len(msg)-1))

"""
 替换；xxx.replace()
"""
mystr = "hello world and changxin and changxin and python and java "
print(mystr.replace("and" , '&' ))
print(mystr) # 注意使用replace之后是产生了一个新的字符串，而不是在原来字符串上做了修改。

""" 
    分割：str.split('分割字符',num) num表示要分割多少次,默认有几个分割字符分割几次
"""
mystr2 = 'one,two,three,four'
split = mystr2.split(',',2)
print(split)

"""
    拼接：xxxx.join(字符列表或者字符序列)
    表示 使用xxx,把字符序列中的各个值拼接起来。 
"""
mystr3 = "aaaa"
mystr4 = "bbbb"
print("_".join(mystr4))

list1  = ['one','two','three','four']
print("_".join(list1))

"""
    字母大小写
    xxx.capitalize() 只把字符串序列的首字母大写
    xxx.title() 把字符串中所有单词的首字母变大写
    xxx.lower() 把字符串中大写字母变小写
    xxx.upper() 把字符串小写字母变大写
"""
cap1 = 'hello world i love you'
print(cap1.capitalize())
print(cap1.title())

lowup = "aaabbbccc"
print(lowup.upper())
lowup1 = "AAABBBCCC"
print(lowup.lower())


""" 
    处理字符串两侧的空白
    str.lstrip() # 去除左侧的空白
    str.rstrip() # 去除右侧的空白
    str.strip    # 去除字符串两侧的空白 
"""
mystrip=" abc a b c "
print("mystrip原始长度："+str(len(mystrip)))
trim1 = mystrip.lstrip()
print(trim1 + "长度："+str(len(trim1)))
trim2 = mystrip.rstrip()
print(trim2 + "长度："+str(len(trim2)))
trim3 = mystrip.strip()
print(trim3 + "长度："+str(len(trim3)))

"""
居中对齐：
    str.ljust('一行的长度x',填充字符串) 
    如果一行的长度是10个字符，但是字符串左对齐后长度不够，剩下的用填充字符串填充
    str.rjust('一行的长度x',填充字符串)
    如果一行的长度是10个字符，但是字符串右对齐后长度不够，剩下的用填充字符串填充
    str.just('一行的长度x',填充字符串)
    如果一行的长度是10个字符，但是字符串右对齐后长度不够，剩下的用填充字符串填充
"""
myfill = "china"
print(myfill.ljust(10, "-"))
print(myfill.rjust(10, "-"))
print(myfill.center(10, "-"))

"""
字符串相关的判断
    str.startWith() 字符串是否以xxx结尾
    str.endWith()   字符串是否以xxx结尾
    str.isalpha()   字符串长度至少为1，且全都是字母组成 返回True
    str.isdigit()   字符串长度至少为1，且全都是数字组成 返回True
    str.isalnum()   字符串长度至少为1 ，且仅仅包含字母数字返回True
    str.isspace()   字符串是否全都是空格
"""
stra ="abAA"
strb ="1111"
strc = "ab1A1"
strs = "   "
strnull = ""

print(stra.startswith("ab")) #T
print(stra.endswith("AA"))# T
print(stra.isalpha())#T
#
print(strb.isdigit())# T
print(strc.isdigit())#F
print(strc.isalnum())#T
#
print(strnull.isalpha())#F
print(strnull.isdigit())#F
print(strnull.isalnum()) #F 是否仅包含数字



